import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 晓星航
 * Date: 2023-06-02
 * Time: 10:32
 */
public class JDBCInsert {
    public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);
        //JDBC 需要通过以下步骤来完成开发。
        //1.创建并初始化一个数据源
        DataSource dataSource = new MysqlDataSource();//向上转型  父类引用子类
        //向下转型  子类引用父类 有些方法只有子类有，父类没有
        ((MysqlDataSource)dataSource).setUrl("jdbc:mysql://127.0.0.1:3306/javamysql?characterEncoding=utf8&useSSL=false");
        ((MysqlDataSource)dataSource).setUser("root");
        ((MysqlDataSource)dataSource).setPassword("111111");
//        MysqlDataSource dataSource = new MysqlDataSource();
//        dataSource.setUrl();
        //2.和数据库服务器建立连接
        Connection connection = dataSource.getConnection();
        //3.从控制台读取用户的输入内容
        System.out.println("请输入学生姓名：");
        String name = scanner.nextLine();
        System.out.println("请输入学号：");
        int id = scanner.nextInt();
        //4.构造 SQL 语句
        String sql = "insert into student values(?,?)";
        //预编译一下sql语句 减小服务器的压力(1份语句可能还好 但是如果是10000份语句那么耗时就会很长)
        PreparedStatement statement = connection.prepareStatement(sql);
        statement.setInt(1,id);//将占位符1替换成id
        statement.setString(2,name);//将占位符2替换成name
        //这个打印需要加到拼接数据之后
        System.out.println(statement);
        //5.执行 SQL 语句
        int ret = statement.executeUpdate();
        System.out.println("ret = " + ret);
        //6.释放必要的资源
        statement.close();
        connection.close();
    }
}

